package com.ruoyi.manage.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.manage.domain.DeviceHdd;
import com.ruoyi.manage.mapper.DeviceHddMapper;
import com.ruoyi.manage.service.IDeviceHddService;

/**
 * 设备硬盘信息Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-09-04
 */
@Service
public class DeviceHddServiceImpl implements IDeviceHddService
{
    @Autowired
    private DeviceHddMapper deviceHddMapper;

    /**
     * 查询设备硬盘信息
     * 
     * @param hddId 设备硬盘信息主键
     * @return 设备硬盘信息
     */
    @Override
    public DeviceHdd selectDeviceHddByHddId(Long hddId)
    {
        return deviceHddMapper.selectDeviceHddByHddId(hddId);
    }

    /**
     * 根据设备编码查询设备硬盘信息列表
     * 
     * @param deviceCode 设备编码
     * @return 设备硬盘信息集合
     */
    @Override
    public List<DeviceHdd> selectDeviceHddByDeviceCode(String deviceCode)
    {
        return deviceHddMapper.selectDeviceHddByDeviceCode(deviceCode);
    }

    /**
     * 查询设备硬盘信息列表
     * 
     * @param deviceHdd 设备硬盘信息
     * @return 设备硬盘信息集合
     */
    @Override
    public List<DeviceHdd> selectDeviceHddList(DeviceHdd deviceHdd)
    {
        return deviceHddMapper.selectDeviceHddList(deviceHdd);
    }

    /**
     * 新增设备硬盘信息
     * 
     * @param deviceHdd 设备硬盘信息
     * @return 结果
     */
    @Override
    public int insertDeviceHdd(DeviceHdd deviceHdd)
    {
        return deviceHddMapper.insertDeviceHdd(deviceHdd);
    }

    /**
     * 修改设备硬盘信息
     * 
     * @param deviceHdd 设备硬盘信息
     * @return 结果
     */
    @Override
    public int updateDeviceHdd(DeviceHdd deviceHdd)
    {
        return deviceHddMapper.updateDeviceHdd(deviceHdd);
    }

    /**
     * 批量删除设备硬盘信息
     * 
     * @param hddIds 需要删除的数据主键集合
     * @return 结果
     */
    @Override
    public int deleteDeviceHddByHddIds(Long[] hddIds)
    {
        return deviceHddMapper.deleteDeviceHddByHddIds(hddIds);
    }

    /**
     * 删除设备硬盘信息信息
     * 
     * @param hddId 设备硬盘信息主键
     * @return 结果
     */
    @Override
    public int deleteDeviceHddByHddId(Long hddId)
    {
        return deviceHddMapper.deleteDeviceHddByHddId(hddId);
    }

    /**
     * 保存设备硬盘信息列表
     * 
     * @param deviceCode 设备编码
     * @param hddList 硬盘信息列表
     * @return 结果
     */
    @Override
    @Transactional
    public int saveDeviceHddList(String deviceCode, List<DeviceHdd> hddList)
    {
        // 先删除该设备的所有硬盘信息
        deviceHddMapper.deleteDeviceHddByDeviceCode(deviceCode);
        
        // 再批量插入新的硬盘信息
        int count = 0;
        if (hddList != null && !hddList.isEmpty())
        {
            for (DeviceHdd hdd : hddList)
            {
                hdd.setDeviceCode(deviceCode);
                count += deviceHddMapper.insertDeviceHdd(hdd);
            }
        }
        return count;
    }
}